package com.hqyj.springboot.modules.common.controller;

import com.hqyj.springboot.modules.common.vo.ImageType;
import com.hqyj.springboot.modules.common.vo.Result;
import org.springframework.web.bind.annotation.*;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@RestController
@RequestMapping("/api")
public class EnumDictionaryController {
    public static Map<String,Class> map = new HashMap<String,Class>(){{
        //创建一个静态map，其中key是枚举的名字，value是枚举对应的类模板
        put("imageType",ImageType.class);
       put("resultStatus", Result.ResultStatus.class);


    }};
    /*
    {{}}; <==> static{} 它们是静态代码块的两种写法
     */


//    static {
//        map.put("imageType", ImageType.class);
//
//    }

    @GetMapping("/dictionary/{enumName}")
    public List<Object> enumDictionary(@PathVariable String enumName){
        try {
            //接口将枚举的名字传入，从map中获得对应枚举的类模板
            Class clazz = map.get(enumName);
            if (clazz != null) {
                //通过反射的方式，调用枚举的values方法，获得枚举数组

                Method method = clazz.getDeclaredMethod("values");
                Object[] objects = (Object[]) method.invoke(null);


                //将枚举数组转化为list对象，作为接口返回值
                return Arrays.asList(objects);
            }
        } catch (Exception e) {
                e.printStackTrace();
            }

       return null;
    }
}
